/*
ID: khymill1
PROG: milk3
LANG: C++
*/
#include <string.h>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <set>
using namespace std;



void dfs(vector<int> size, vector<int> cur, set<int> &myMap, vector<int> &ans)
{
	int hash = cur[0]*10000 + cur[1]*100 + cur[2];
	if (myMap.count(hash) != 0) return;
	if (cur[0] == 0 && cur[1] <= size[1] && cur[2] <= size[2]) ans.push_back(cur[2]);
	myMap.insert(hash);
	

	for (int i = 0; i < 3; i++) {
		if (cur[i] == 0) continue;
		for (int j = 0; j < 3; j++) {
			if (j == i) continue;
			int diff = size[j] - cur[j];
			if (diff >= cur[i]) {
				int tmp = cur[i];
				cur[j] += cur[i];
				cur[i] = 0;
				dfs(size, cur, myMap, ans);
				cur[j] -= tmp;
				cur[i] = tmp;
			} else {
				int tmp = size[j] - cur[j];
				cur[j] += tmp;
				cur[i] -= tmp;
				dfs(size, cur, myMap, ans);
				cur[j] -= tmp;
				cur[i] += tmp;
			}
		}
	}

	return;
}

int main()
{
    ifstream fin("milks.in");
    ofstream fout("milks.out");
    int a, b, c;
	vector<int> size(3);
    fin >> size[0] >> size[1] >> size[2];
	vector<int> ans;
	set<int> myMap;
	vector<int> cur = size;	
	cur[0] = 0;
	cur[1]= 0;
	dfs(size, cur, myMap, ans);
	sort(ans.begin(), ans.end());
	for (int i = 0; i < ans.size()-1; i++)
		fout << ans[i] << " ";
	fout << ans[ans.size()-1] << endl;

    return 0;
}                                          
